package leetcode.pre100;

/**
 * 给定一个由整数组成的非空数组所表示的非负整数，在该数的基础上加一。
 * <p>
 * 最高位数字存放在数组的首位， 数组中每个元素只存储单个数字。
 * <p>
 * 你可以假设除了整数 0 之外，这个整数不会以零开头。
 * <p>
 * 示例 1:
 * <p>
 * 输入: [1,2,3]
 * 输出: [1,2,4]
 * 解释: 输入数组表示数字 123。
 * 示例 2:
 * <p>
 * 输入: [4,3,2,1]
 * 输出: [4,3,2,2]
 * 解释: 输入数组表示数字 4321。
 *
 * @date 2020/6/6 15:41
 */
public class Code66_PlusOne_加一操作 {
    public int[] plusOne(int[] digits) {
        if (digits == null || digits.length == 0) return digits;
        int len = digits.length;
        digits[len - 1]++;
        int carry = digits[len - 1] / 10;
        digits[len - 1] %= 10;
        for (int i = len - 2; i >= 0; i--) {
            if (carry == 0) return digits;
            digits[i] += carry;
            carry = digits[i] / 10;
            digits[i] %= 10;
        }
        //数组全是9的情况{9,9,9}
        if(carry == 1){
            int[] res = new int[digits.length+1];
            res[0] = 1;
            return res;
        }
        return digits;
    }


}
